package sv.com.globalsolutionslt.manejador;


import sv.com.globalsolutionslt.controlador.PublicacionFacade;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.FlowEvent;
import sv.com.globalsolutionslt.controlador.EstadoPublicacionFacade;
import sv.com.globalsolutionslt.entidades.AreaEmpresa;
import sv.com.globalsolutionslt.entidades.DetallePublicacion;
import sv.com.globalsolutionslt.entidades.Empresa;
import sv.com.globalsolutionslt.entidades.Publicacion;
import sv.com.globalsolutionslt.entidades.pojos.EstadoPublicacionEnum;
import sv.com.globalsolutionslt.manejador.util.JsfUtil;

@ManagedBean
@SessionScoped
public class PublicacionRegistroMB {
    @EJB
    private EstadoPublicacionFacade estadoPublicacionFacade;
    @EJB
    private PublicacionFacade publicacionFacade;
    

    private Empresa empresa;
    private Publicacion publicacion;
    private AreaEmpresa areaEmpresa; 
    private String descripcion;
    @ManagedProperty(value = "#{usuarioSesionMB}")
    private UsuarioSesionMB usuarioSesionMB;
    
    public PublicacionRegistroMB() {

    }

    
    public Publicacion getPublicacion() {return publicacion;}
    public void setPublicacion(Publicacion publicacion) {this.publicacion = publicacion;}

    public AreaEmpresa getAreaEmpresa() {return areaEmpresa;}
    public void setAreaEmpresa(AreaEmpresa areaEmpresa) {this.areaEmpresa = areaEmpresa;}

    public String getDescripcion() {return descripcion;}
    public void setDescripcion(String descripcion) {this.descripcion = descripcion;}

    
    public String prepararPublicacion(Empresa e){                
        empresa= e;
        areaEmpresa= new AreaEmpresa();
        publicacion= new Publicacion();        
        return "/empresa/registroPublicacion";
    }
    
    public void prepararDescripcion(){descripcion="";}    
    
    public void registrarPublicacion() {        
        
        try{
            publicacion.setFechaReg(new Date());
            publicacion.setFechaMod(new Date());
            publicacion.setUsuarioMod(this.usuarioSesionMB.getUsuario().getIdUsuario());
            publicacion.setIdEmpresa(empresa);
            publicacion.setIdEstadoPublicacion(estadoPublicacionFacade.encontrarEstadoPublicacionPorNombre(EstadoPublicacionEnum.HABILITADA.name()));

            publicacionFacade.crear(publicacion);

            List<DetallePublicacion> ds;
            DetallePublicacion d= new DetallePublicacion();
            d.setIdPublicacion(publicacion);
            d.setDescripcion(getDescripcion());
            publicacion.getDetallePublicacionList().add(d);

            publicacionFacade.modificar(publicacion);
            
            JsfUtil.agregarMensajeExitoso("Publicación ha sido agregada");
            prepararPublicacion(empresa);
            
        }catch(Exception e){
            e.printStackTrace();
            JsfUtil.agregarMensajeError(JsfUtil.MENSAJE_ERROR_DEFECTO);
        }
    }
    
    
     public String irFlujoDeProceso(FlowEvent event) {  
         System.out.println("Current wizard step:" + event.getOldStep());  
         System.out.println("Next step:" + event.getNewStep());  
          
        
         return event.getNewStep();    
    }  

    public UsuarioSesionMB getUsuarioSesionMB() {
        return usuarioSesionMB;
    }

    public void setUsuarioSesionMB(UsuarioSesionMB usuarioSesionMB) {
        this.usuarioSesionMB = usuarioSesionMB;
    }
     
     
     
    
}